package ink.tiptop.dto.req.base.server;

import com.fasterxml.jackson.annotation.JsonProperty;
import ink.tiptop.annotation.EnumValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.*;
import java.io.Serializable;

/**
 * 服务器基本连接信息(ZjfBaseServerInfoEntity)实体类
 *
 * @author makejava
 * @since 2020-06-21 20:40:28
 */
@Getter
@Setter
@ApiModel("更新基本服务器信息对象")
public class UpdateZjfBaseServerInfoRequest implements Serializable {
    private static final long serialVersionUID = 562641425358423942L;
    /**
    * 服务器唯一ID(年月日+8位循环)
    */
    @JsonProperty("ID")
    @NotNull(message = "ID不能为空")
    @ApiModelProperty(example="1",required=true,value = "服务器ID")
    private Integer id;
    /**
     * 服务器名称
     */
    @JsonProperty("NAME")
    @ApiModelProperty(example="测试服务器",required=false,value = "服务器名称")
    private String name;
    /**
     * 服务器IP(格式127.0.0.1)
     */
    @JsonProperty("HOST")
    // 如果是null的话就会忽略这个
    @Pattern(regexp = "^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$"
            ,message = "IP的格式不正确")
    @ApiModelProperty(example="1",required=false,value = "127.0.0.1")
    private String host;
    /**
     * 服务器端口(0-65535)
     */
    @JsonProperty("PORT")
//    @NotNull(message = "端口不能为空")
    @Min(value = 0,message = "端口号最小为0")
    @Max(value = 65535,message = "端口号不能超过65535")
    @ApiModelProperty(example="22",required=false,value = "服务器端口(0-65535)")
    private Integer port;
    /**
     * 服务器用户名
     */
    @JsonProperty("USER")
    @ApiModelProperty(example="root",required=false,value = "服务器用户名")
    private String user;
    /**
     * 服务器密码
     */
    @JsonProperty("PASS")
    @ApiModelProperty(example="sally",required=false,value = "服务器密码")
    private String pass;
    /**
     * 服务器连接pubkey
     */
    @JsonProperty("KEY")
    @ApiModelProperty(example="123",required=false,value = "服务器连接pubkey")
    private String key;
    /**
     * 服务器备注
     */
    @JsonProperty("DESC")
    @ApiModelProperty(example="测试服务器",required=false,value = "服务器备注")
    private String desc;

    /**
     * 连接方式,0:密码,1:key
     */
    @JsonProperty("CONNWAY")
    @EnumValue(intValues = {0,1},message = "连接方式只能为密码或者key")
    @ApiModelProperty(example="0",required=false,value = "连接方式,0:密码,1:key")
    private Integer connWay;

    /**
     * 操作的用户
     */
    @JsonProperty("OPERATOR")
    @ApiModelProperty(example="admin",required=false,value = "操作的用户")
    private String operator;

}